//
// Created by iguilty on 2022-01-13.
//

#ifndef DESIGN_PATTERN_CPP_ABSTRACTIONIMP_H
#define DESIGN_PATTERN_CPP_ABSTRACTIONIMP_H


class AbstractionImp {
public:
    virtual ~AbstractionImp();
    virtual void Operation()=0;

protected:
    AbstractionImp();
};

class ConcreteAbstractionImpA:public AbstractionImp{
public:
    ConcreteAbstractionImpA();
    ~ConcreteAbstractionImpA();
    virtual void Operation();
};

class ConcreteAbstractionImpB:public AbstractionImp{
public:
    ConcreteAbstractionImpB();
    ~ConcreteAbstractionImpB();
    virtual void Operation();
};


#endif //DESIGN_PATTERN_CPP_ABSTRACTIONIMP_H
